home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
IRIX Base Documentation 1998 November
/
IRIX 6.5.2 Base Documentation November 1998.img
/
usr
/
share
/
catman
/
u_man
/
cat1
/
xstr.z
/
xstr
Wrap
Text File
|
1998-10-20
|
4KB
|
133 lines
XXXXSSSSTTTTRRRR((((1111)))) XXXXSSSSTTTTRRRR((((1111))))
NNNNAAAAMMMMEEEE
xstr - extract strings from C programs to implement shared strings
SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
xxxxssssttttrrrr [ ----vvvv ] [ [ ----cccc ] [ ---- ] [ file ]
DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
_X_s_t_r maintains a file _s_t_r_i_n_g_s into which strings in component parts of a
large program are hashed. These strings are replaced with references to
this common area. This serves to implement shared constant strings, most
useful if they are also read-only. The -v flag makes _x_s_t_r verbose.
The command
xxxxssssttttrrrr ----cccc name
will extract the strings from the C source in name, replacing string
references by expressions of the form (&xstr[number]) for some number.
An appropriate declaration of _x_s_t_r is prepended to the file. The
resulting C text is placed in the file _x._c, to then be compiled. The
strings from this file are placed in the _s_t_r_i_n_g_s data base if they are
not there already. Repeated strings and strings which are suffices of
existing strings do not cause changes to the data base.
After all components of a large program have been compiled a file _x_s._c
declaring the common _x_s_t_r space can be created by a command of the form
xxxxssssttttrrrr
This _x_s._c file should then be compiled and loaded with the rest of the
program. If possible, the array can be made read-only (shared) saving
space and swap overhead.
_X_s_t_r can also be used on a single file. A command
xxxxssssttttrrrr name
creates files _x._c and _x_s._c as before, without using or affecting any
_s_t_r_i_n_g_s file in the same directory.
It may be useful to run _x_s_t_r after the C preprocessor if any macro
definitions yield strings or if there is conditional code which contains
strings which may not, in fact, be needed. _X_s_t_r reads from its standard
input when the argument `-' is given. An appropriate command sequence
for running _x_s_t_r after the C preprocessor is:
cccccccc ----EEEE name.c | xxxxssssttttrrrr ----cccc -
cccccccc ----cccc x.c
mmmmvvvv x.o name.o
PPPPaaaaggggeeee 1111
XXXXSSSSTTTTRRRR((((1111)))) XXXXSSSSTTTTRRRR((((1111))))
_X_s_t_r does not touch the file _s_t_r_i_n_g_s unless new items are added, thus
_m_a_k_e can avoid remaking _x_s._o unless truly necessary.
FFFFIIIILLLLEEEESSSS
strings Data base of strings
x.c Massaged C source
xs.c C source for definition of array `xstr'
/tmp/xs* Temp file when `xstr name' doesn't touch _s_t_r_i_n_g_s
SSSSEEEEEEEE AAAALLLLSSSSOOOO
mkstr(1)
AAAAUUUUTTTTHHHHOOOORRRR
William Joy
BBBBUUUUGGGGSSSS
If a string is a suffix of another string in the data base, but the
shorter string is seen first by _x_s_t_r both strings will be placed in the
data base, when just placing the longer one there will do.
PPPPaaaaggggeeee 2222